1. Field of the Invention
The present invention relates to Fibre Channel systems, and more particularly, to reducing deadlock problems in Fibre Channel Fabrics.
2. Background of the Invention
Fibre channel is a set of American National Standard Institute (ANSI) standards, which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre channel supports three different topologies: point-to-point, arbitrated loop and fibre channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fibre channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The fibre channel fabric topology allows several media types to be interconnected.
Fibre channel is a closed system that relies on multiple ports to exchange information on attributes and characteristics to determine if the ports can operate together. If the ports can work together, they define the criteria under which they communicate.
In fibre channel, a path is established between two nodes where the path's primary task is to transport data from one point to another at high speed with low latency, performing only simple error detection in hardware.
Fibre channel fabric devices include a node port or “N_Port” that manages fabric connections. The N_port establishes a connection to a fabric element (e.g., a switch) having a fabric port or F_port. Fabric elements include the intelligence to handle routing, error detection, recovery, and similar management functions.
A fibre channel switch is a multi-port device where each port manages a simple point-to-point connection between itself and its attached system. Each port can be attached to a server, peripheral, I/O subsystem, bridge, hub, router, or even another switch. A switch receives messages from one port and automatically routes it to another port. Multiple calls or data transfers happen concurrently through the multi-port fibre channel switch.
Fibre channel switches use memory buffers to hold frames received and sent across a network. Associated with these buffers are credits, which are the number of frames that a buffer can hold per fabric port.
The following Fibre Channel standards are used for Fibre Channel systems and Fibre Channel Fabrics, and are incorporated herein by reference in their entirety:
ANSI INCITS xxx-200× Fibre Channel Framing and Signaling Interface (FC-FS)-T11/Project 1331D; and ANSI INCITS xxx-200× Fibre Channel Switch Fabric-3 (FC-SW-3), T11/Project 1508D.
As discussed above, a Fibre Channel Fabric can consist of multiple switches connected in an arbitrary topology. The links between the switches use a buffer-to-buffer credit scheme for flow control so that all frames transmitted have a receive buffer. Fabric deadlock may occur if a switch cannot forward frames because the recipient switch buffers (receive buffers) are full.
The following example, described with respect to FIG. 1E, shows how a deadlock situation can occur. FIG. 1E shows five switches (“SW”) 1, 2, 3, 4, and 5 that are linked together by ISLs (Inter Switch Links) in a ring topology. Host 11 and target 21 are linked to switch 1, host 12 and target 22 are linked to switch 2, and so forth.
In this example, hosts 11-15 can send data as fast as they can to a target that is two (2) hops (number of ISLs) away, for example:                Host 11 can send data to target 23;        Host 12 can send data to target 24;        Host 13 can send data to target 25;        Host 14 can send data to target 21; and        Host 15 can send data to target 22        
For illustration purposes only, all traffic goes in the clockwise direction in FIG. 1E.
The receive buffers available for each ISL in the direction of traffic may get filled with frames addressed to the next switch. For example:
For the ISL between switch 1 and switch 2, the receive buffers on switch 2 get filled with frames for switch 3;
For the ISL between switch 2 and switch 3, the receive buffers on switch 3 get filled with frames for switch 4;
For the ISL between switch 3 and switch 4, the receive buffers on switch 4 get filled with frames for switch 5;
For the ISL between switch 4 and 5, the receive buffers on 5 get filled with frames for switch 1; and
For the ISL between switch 5 and switch 1, the receive buffers on switch 1 get filled with frames for switch 2.
The transmit side of a switch waits for
R_RDYs before it can transmit any frames. If frames cannot be transmitted from one ISL, then the receive buffers for the other ISL cannot be emptied. If the receive buffers cannot be emptied, no R_RDY flow control signals can be transmitted, which deadlocks the Fabric.
Many large Fabrics have paths that form rings within them, especially if they are designed to avoid single points of failure by using redundant switches. Such network traffic patterns may result in a deadlock situation disrupting networks using fibre channel switches and components.
Therefore, there is need for a system and method for minimizing deadlock problems in fibre channel switches.